接下來我們講講在做機器學習時,會用到的重要概念—encoder。Encoder是一種可以讓城市去更好理解我們的資料以及去做運算的方式。今天會介紹兩種最常見的encode方法—label encoding、one hot encoding。
首先我們先利用pandas的dataframe來產生原始資料。
import pandas as pd
food = ["Apple", "Banana", "Cake", "Apple"]
calorie = [123.45, 345.65, 234.35, 246.45]
amount = [1, 4, 2, 2]
dic = {"Food": food,"Calorie": calorie, "Amount": amount}
data = pd.DataFrame(dic)
(一) Label encoding
Label encoding會將欄位中的內容用mapping的概念轉換成一個整數,不會去更動到欄位的數量。像上方的資料在Label encoding的轉換過後就會變成如下:
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
data1 = data.copy()
data1["Food"] = label_encoder.fit_transform(data1["Food"])
(二) One hot encoding
One hot encoding的作法則是將欄位中的所有欄位值當作一個新的欄位,用0和1來表示是否是這個值。
from sklearn.preprocessing import OneHotEncoder
one_hot_encoder = OneHotEncoder()
data2 = data.copy()
data2_transform = one_hot_encoder.fit_transform(data2[["Food"]]).toarray()
data2 = data2.drop("Food", axis = 1)
data2 = pd.concat([data2, pd.DataFrame(data2_transform)], axis = 1)